Some software service providers offer software applications to clients that are customized to each client. For example, one way that software service providers are able to provide client-customized applications is by providing application code that is shared to all clients and additionally providing client-specific code that is specific to a given client. Accordingly, the code at a client-by-client level may be very different.
When deploying an application or updates to various clients, the software service provider may be provided with two options: either a universal installation to all clients that contains the client-agnostic code and each client's client-specific code, or a client-specific installation where a different deployment containing the client-agnostic code and the client's client-specific code is made for each client. With the universal installation option, all clients' client-specific code may be included in the deployment. Although transparent to the clients, each client is installing code that are irrelevant and extraneous because they are specific to different clients. Additionally, because a universal deployment includes every client's code, regression testing of the code can be costly and time consuming. Accordingly, such a deployment may be very large, costly, and unnecessary. As can be appreciated with the client-specific installation, client-specific deployments may entail a large number of deployments depending on the number of clients. A client-specific deployment to each client can be difficult to manage from a support perspective, and may be resource-intensive and time-intensive.
Additionally, some clients may use a third party server, wherein the software service provider may not have the rights or permissions to update applications on the third party's servers. Accordingly, updates may be reliant on the client's information technology (IT) department or on the third party's IT department, which may take days to weeks for the deployment to be scheduled and to be performed.